<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        function Person(name) {
            this.name = name;
        }

        // 修改原型
        Person.prototype.getName = function () {
            return this.name;
        }
        let person1 = new Person('xiaoming');
        console.log(person1.__proto__ == Person.prototype);
        console.log(person1.__proto__ == person1.constructor.prototype);

        console.log('---------------------------');

        // 重写原型
        Person.prototype = {
            getName(){
                return this.name;
            }
        }
        let person2 = new Person('xiaoming');
        console.log(person2.__proto__ == Person.prototype);//true，
        console.log(person2.__proto__ == person2.constructor.prototype);//false, 因为constructor一般是js默认放在构造函数的prototype上的，但是你在上面重写了prototype且没有给出constructor这个属性，所以person2.construtor并不是Person，因此这里是false。顺着原型链，因为Person.prototype是一个对象，所以他肯定有个__proto__去指向Object.prototype，Object.prototype身上肯定是有constructor属性的，它就是Object本身，所以这里的person2.constructor.prototype其实就是Object.prototype
        console.log(person2.constructor.prototype == Object.prototype);//true
        
    </script>
</body>

</html>